/**
 * @author Paulo Faria Reis
 * @created 15 Mar 2012
 *
 */
package controller;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import networkoperations.Searcher;


/**
 * @author Paulo Faria Reis
 */
public class TextUI implements Runnable {
	DataStore dataStorage;

	public TextUI(DataStore dataStor) {
		dataStorage = dataStor;
	}

	/* (non-Javadoc)
	 * @see java.lang.Thread#run()
	 */
	@Override
	public void run(){
		BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));
		int optionSelected;
		String searchFor;
//		String hashWanted;
//		Searcher fileSearch;
		

		while(dataStorage.keepWorking()) {
			System.out.println("Escolha a sua opção:");
			System.out.println("1 - Procurar ficheiro.");
			System.out.println("2 - Seleccionar directoria de partilha, actual (" + dataStorage.getSharedDir() + ").");
			System.out.println("0 - Terminar.");

			try{
				optionSelected = Integer.parseInt(bufferRead.readLine());
			}
			catch(IOException e){
				System.out.println("Dados inválidos!");
				continue;
			}
			catch(NumberFormatException e) {
				System.out.println("Apenas números!");
				continue;
			}

			if(optionSelected == 0) {
				dataStorage.stopWorking();
			}
			else if(optionSelected == 2) {
				// Perguntar por pasta.
				System.out.println("Mudar directoria de partilha!");
				continue;
			}
			else if(optionSelected == 1) {	// Fazer pesquisa.
				if(dataStorage.debug()) System.out.println("Lançar uma pesquisa!");
				System.out.println("Procurar por (palavras a pesquisar separadas por espaços.:");
				try {
					searchFor = bufferRead.readLine();
				} catch (IOException e) {
					System.out.println("Valores inválidos para pesquisa!");
					continue;
				}
//				try {
//					fileSearch = new Searcher(searchFor, dataStorage);
//					
//				} catch (IOException e) {
//					System.out.println("Error!");
//				}
				
//				hashWanted = fileSearch.fileHashSelected();
				continue;
			}
			else {
				System.out.println("Opção inválida!");
				continue;
			}
		}
		System.out.println("Até breve.");
		return;
	}

	/**
	 *  Tells thread to stop.
	 */
	public void myStop() {
		dataStorage.stopWorking();
		return;
	}
}
